#ifndef ENCRIPTADOR_H_
#define ENCRIPTADOR_H_

#include <vector>
#include <string>
#include <cstring>
#include "Matriz.h"
#include "Md5.h"
#include "../CapaLogica/Utilitarios/Utilitarios.h"

using namespace std;

class Encriptador {

private:

public:
	Matriz* matriz;
	Matriz* matrizInversa;
	int tamanioMatriz;
	long tamanioBloque;
	string vocabulario;

	Encriptador(string clave);
	long InversaMOD(long num);
	int getTamanioMatriz();
	void nuevoEncriptar(char* bloque);
	void nuevoDesencriptar(char* bloqueEncriptado);
	void encriptar(char* bloque, long tamanioTexto);
	void desencriptar(char* bloqueEncriptado, long tamanioTexto);
	void ImprimirMatriz();
	void ImprimirMatrizInversa();
	bool claveValida(string clave);
	string ToUpper(string texto);
	string normalizarTexto(string texto);
	int Hash1(string clave);
	void setClave(string clave);
	virtual ~Encriptador();
};

#endif /* ENCRIPTADOR_H_ */
